home *** CD-ROM | disk | FTP | other *** search
- package mx.preloaders
- {
- import flash.display.DisplayObject;
- import flash.display.Loader;
- import flash.display.LoaderInfo;
- import flash.display.MovieClip;
- import flash.display.Sprite;
- import flash.events.ErrorEvent;
- import flash.events.Event;
- import flash.events.IEventDispatcher;
- import flash.events.IOErrorEvent;
- import flash.events.ProgressEvent;
- import flash.events.SecurityErrorEvent;
- import flash.events.TimerEvent;
- import flash.net.URLRequest;
- import flash.system.ApplicationDomain;
- import flash.system.LoaderContext;
- import flash.utils.Timer;
- import mx.core.mx_internal;
- import mx.events.FlexEvent;
- import mx.events.RSLEvent;
-
- use namespace mx_internal;
-
- public class Preloader extends Sprite
- {
- mx_internal static const VERSION:String = "2.0.1.0";
-
- private var showDisplay:Boolean;
-
- private var timer:Timer;
-
- private var rslIndex:int = 0;
-
- private var rslDone:Boolean = false;
-
- private var rslLibs:Array;
-
- private var displayClass:IPreloaderDisplay = null;
-
- public function Preloader()
- {
- displayClass = null;
- rslIndex = 0;
- rslDone = false;
- super();
- }
-
- mx_internal function rslCompleteHandler(param1:Event, param2:RSLNode) : void
- {
- var _loc3_:RSLEvent = null;
- _loc3_ = new RSLEvent(RSLEvent.RSL_COMPLETE);
- _loc3_.bytesLoaded = param2.total;
- _loc3_.bytesTotal = param2.total;
- _loc3_.rslIndex = param2.index;
- _loc3_.rslTotal = rslLibs.length;
- _loc3_.url = param2.url;
- dispatchEvent(_loc3_);
- loadRSL(++rslIndex);
- }
-
- private function appProgressHandler(param1:Event) : void
- {
- dispatchEvent(new FlexEvent(FlexEvent.INIT_PROGRESS));
- }
-
- mx_internal function rslErrorHandler(param1:ErrorEvent, param2:RSLNode) : void
- {
- var _loc3_:RSLEvent = null;
- _loc3_ = new RSLEvent(RSLEvent.RSL_ERROR);
- _loc3_.bytesLoaded = 0;
- _loc3_.bytesTotal = 0;
- _loc3_.rslIndex = param2.index;
- _loc3_.rslTotal = rslLibs.length;
- _loc3_.url = param2.url;
- _loc3_.errorText = param1.text;
- dispatchEvent(_loc3_);
- }
-
- private function displayClassCompleteHandler(param1:Event) : void
- {
- dispatchEvent(new FlexEvent(FlexEvent.PRELOADER_DONE));
- }
-
- private function timerHandler(param1:TimerEvent) : void
- {
- var _loc2_:Object = null;
- var _loc3_:int = 0;
- var _loc4_:int = 0;
- if(!root)
- {
- return;
- }
- _loc2_ = getByteValues();
- _loc3_ = int(_loc2_.loaded);
- _loc4_ = int(_loc2_.total);
- dispatchEvent(new ProgressEvent(ProgressEvent.PROGRESS,false,false,_loc3_,_loc4_));
- if(rslDone && (_loc3_ >= _loc4_ && _loc4_ > 0 || _loc4_ == 0 && _loc3_ > 0 || root is MovieClip && MovieClip(root).totalFrames > 2 && MovieClip(root).framesLoaded >= 2))
- {
- timer.removeEventListener(TimerEvent.TIMER,timerHandler);
- timer.reset();
- dispatchEvent(new Event(Event.COMPLETE));
- dispatchEvent(new FlexEvent(FlexEvent.INIT_PROGRESS));
- }
- }
-
- private function getByteValues() : Object
- {
- var _loc1_:LoaderInfo = null;
- var _loc2_:int = 0;
- var _loc3_:int = 0;
- var _loc4_:int = 0;
- var _loc5_:int = 0;
- _loc1_ = root.loaderInfo;
- _loc2_ = int(_loc1_.bytesLoaded);
- _loc3_ = int(_loc1_.bytesTotal);
- _loc4_ = !!rslLibs ? int(rslLibs.length) : 0;
- _loc5_ = 0;
- while(_loc5_ < _loc4_)
- {
- _loc2_ += rslLibs[_loc5_].loaded;
- _loc3_ += rslLibs[_loc5_].total;
- _loc5_++;
- }
- return {
- "loaded":_loc2_,
- "total":_loc3_
- };
- }
-
- private function ioErrorHandler(param1:IOErrorEvent) : void
- {
- }
-
- public function initialize(param1:Boolean, param2:Class, param3:uint, param4:Number, param5:Object, param6:String, param7:Number, param8:Number, param9:Array = null, param10:Array = null) : void
- {
- var _loc11_:int = 0;
- var _loc12_:int = 0;
- var _loc13_:URLRequest = null;
- var _loc14_:int = 0;
- var _loc15_:RSLNode = null;
- root.loaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
- if(Boolean(param9) && param9.length > 0)
- {
- rslLibs = [];
- _loc11_ = int(param9.length);
- _loc12_ = 0;
- while(_loc12_ < _loc11_)
- {
- _loc13_ = new URLRequest(param9[_loc12_]);
- _loc14_ = 0;
- if(Boolean(param10) && param10.length == param9.length)
- {
- _loc14_ = int(param10[_loc12_]);
- }
- _loc15_ = new RSLNode(_loc13_,_loc12_,_loc14_,this);
- rslLibs.push(_loc15_);
- _loc12_++;
- }
- loadRSL(0);
- }
- else
- {
- rslDone = true;
- }
- this.showDisplay = param1;
- timer = new Timer(10);
- timer.addEventListener(TimerEvent.TIMER,timerHandler);
- timer.start();
- if(param1)
- {
- displayClass = new param2();
- displayClass.addEventListener(Event.COMPLETE,displayClassCompleteHandler);
- addChild(DisplayObject(displayClass));
- displayClass.backgroundColor = param3;
- displayClass.backgroundAlpha = param4;
- displayClass.backgroundImage = param5;
- displayClass.backgroundSize = param6;
- displayClass.stageWidth = param7;
- displayClass.stageHeight = param8;
- displayClass.initialize();
- displayClass.preloader = this;
- }
- }
-
- private function appCreationCompleteHandler(param1:FlexEvent) : void
- {
- dispatchAppEndEvent();
- }
-
- mx_internal function rslProgressHandler(param1:ProgressEvent, param2:RSLNode) : void
- {
- var _loc3_:RSLEvent = null;
- _loc3_ = new RSLEvent(RSLEvent.RSL_PROGRESS);
- _loc3_.bytesLoaded = param1.bytesLoaded;
- _loc3_.bytesTotal = param1.bytesTotal;
- _loc3_.rslIndex = param2.index;
- _loc3_.rslTotal = rslLibs.length;
- _loc3_.url = param2.url;
- dispatchEvent(_loc3_);
- }
-
- private function loadRSL(param1:int) : void
- {
- var _loc2_:RSLNode = null;
- var _loc3_:Loader = null;
- var _loc4_:LoaderContext = null;
- if(param1 < rslLibs.length)
- {
- _loc2_ = rslLibs[param1];
- _loc3_ = new Loader();
- _loc3_.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,_loc2_.progressHandler);
- _loc3_.contentLoaderInfo.addEventListener(Event.COMPLETE,_loc2_.completeHandler);
- _loc3_.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,_loc2_.errorHandler);
- _loc3_.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,_loc2_.errorHandler);
- _loc4_ = new LoaderContext();
- _loc4_.applicationDomain = ApplicationDomain.currentDomain;
- _loc3_.load(_loc2_.url,_loc4_);
- }
- else
- {
- rslDone = true;
- }
- }
-
- public function registerApplication(param1:IEventDispatcher) : void
- {
- param1.addEventListener("validatePropertiesComplete",appProgressHandler);
- param1.addEventListener("validateSizeComplete",appProgressHandler);
- param1.addEventListener("validateDisplayListComplete",appProgressHandler);
- param1.addEventListener(FlexEvent.CREATION_COMPLETE,appCreationCompleteHandler);
- }
-
- private function dispatchAppEndEvent(param1:Object = null) : void
- {
- dispatchEvent(new FlexEvent(FlexEvent.INIT_COMPLETE));
- if(!showDisplay)
- {
- displayClassCompleteHandler(null);
- }
- }
- }
- }
-
- import flash.events.ErrorEvent;
- import flash.events.Event;
- import flash.events.ProgressEvent;
- import flash.net.URLRequest;
- import mx.core.mx_internal;
-
- class RSLNode
- {
- public var completed:Boolean = false;
-
- public var loaded:uint = 0;
-
- public var total:uint = 0;
-
- public var index:int;
-
- public var errorText:String;
-
- public var url:URLRequest;
-
- public var owner:Preloader;
-
- public function RSLNode(param1:URLRequest, param2:int, param3:int, param4:Preloader)
- {
- total = 0;
- loaded = 0;
- completed = false;
- super();
- this.url = param1;
- this.index = param2;
- this.total = param3;
- this.owner = param4;
- }
-
- public function errorHandler(param1:ErrorEvent) : void
- {
- errorText = param1.text;
- completed = true;
- loaded = 0;
- total = 0;
- owner.mx_internal::rslErrorHandler(param1,this);
- }
-
- public function progressHandler(param1:ProgressEvent) : void
- {
- loaded = param1.bytesLoaded;
- total = param1.bytesTotal;
- owner.mx_internal::rslProgressHandler(param1,this);
- }
-
- public function completeHandler(param1:Event) : void
- {
- completed = true;
- owner.mx_internal::rslCompleteHandler(param1,this);
- }
- }
-